﻿/***************************************************************************************************
 * Filename:            SmsImportDll.cs
 * Module:              调用SmsSdk.dll，实现短信接口方法，SmsSdk.dll需要拷贝到system32文件夹下
 * Copyright:           2008 穗联软件 版权所有
 * Author:              钟祺安圣
 * Created Date:        2008-10-24
 * Last Modified Data:  
 * Description:         
***************************************************************************************************/
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace GCELibrary.Current.SmsMessage
{
    /// <summary>
    /// 短信发送三方提供DLL接口
    /// </summary>
    public class SmsImportDll
    {
        public SmsImportDll()
        {

        }
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public struct SmsSend
        {
            public int lSmsID;
            public int reserve;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
            public string szMobile;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 168)]
            public string szMsg;
        }

        #region 调用dll接口

        [DllImport("user32.dll")]//获得窗口句柄的函数,第一个参数为NULL，指定对当前所有窗口都进行搜索。第二个参数就是待搜寻的窗口标题
        public static extern IntPtr FindWindow(string className, string WindowsName);

        [DllImport("SmsSdk.dll")]//连接短信平台服务器并登录
        public static extern int Sms_Connect(string pServer, int lCorpID, string pLoginName, string pPasswd, int lTimeOut, IntPtr hWnd);

        [DllImport("SmsSdk.dll")]//断开短信平台服务器的连接
        public static extern int Sms_DisConnect();

        [DllImport("SmsSdk.dll")]//发送指定的短信，它能自动分段发送,每段信息最大长度为70个字
        public static extern int Sms_Send(string pMobile, string pMsg, out int lSmsID);

        [DllImport("SmsSdk.dll")]//发送指定的短信，它能自动分段发送,每段信息最大长度为70个字
        public static extern int Sms_Send2(string pExNum, string pMobile, string pMsg, out int lSmsID);

        [DllImport("SmsSdk.dll")]//发送指定的短信，它不能自动分段发送,每段信息最大长度为70个字(如带签名，则少于70个字)，超长短信请自行分割
        public static extern int Sms_SendEx(IntPtr pSmsSend, int lCount, int bWaitRet);

        [DllImport("SmsSdk.dll")]//查询指定短信发送后的状态
        public static extern int Sms_Status(int lSmsID);

        [DllImport("SmsSdk.dll")]//查询本帐号能够使用的剩余短信数
        public static extern int Sms_KYSms();

        [DllImport("SmsSdk.dll")]//接收短信函数
        public static extern int Sms_Get(StringBuilder pNo, StringBuilder pMsg, StringBuilder pTime);

        [DllImport("SmsSdk.dll")]//接收短信函数
        public static extern int Sms_Get2(StringBuilder pSendNo, StringBuilder pRecvNo, StringBuilder pMsg, StringBuilder pTime);


        /*********添加By zhong*********/
        [DllImport("SmsSdk.dll")]//发送指定的短信，它能自动分段发送,每段信息最大长度为70个字
        public static extern int Sms_GetCM(string pCM);

        #endregion

    }
}
